#!/usr/bin/env python
"""
添加数据库管理菜单到系统中
"""
import os
import sys
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'devops_backend.settings')
django.setup()

from rbac.models import Menu, Permission

def add_database_menus():
    """添加数据库管理菜单"""
    
    # 创建数据库管理相关权限
    permissions_data = [
        {
            'name': '数据库管理',
            'code': 'database_manage',
            'description': '数据库管理权限'
        },
        {
            'name': '数据库连接管理',
            'code': 'database_connection_manage',
            'description': '数据库连接管理权限'
        },
        {
            'name': 'SQL查询',
            'code': 'database_query',
            'description': 'SQL查询权限'
        },
        {
            'name': '数据库备份',
            'code': 'database_backup',
            'description': '数据库备份权限'
        },
        {
            'name': '数据库监控',
            'code': 'database_monitor',
            'description': '数据库监控权限'
        }
    ]
    
    # 创建权限
    created_permissions = {}
    for perm_data in permissions_data:
        permission, created = Permission.objects.get_or_create(
            code=perm_data['code'],
            defaults={
                'name': perm_data['name'],
                'description': perm_data['description']
            }
        )
        created_permissions[perm_data['code']] = permission
        if created:
            print(f"创建权限: {permission.name}")
        else:
            print(f"权限已存在: {permission.name}")
    
    # 创建数据库管理主菜单
    database_menu, created = Menu.objects.get_or_create(
        path='/database',
        defaults={
            'name': '数据库管理',
            'icon': 'el-icon-coin',
            'sort_order': 3,  # 在系统管理和运维监控之后
            'is_active': True,
            'parent': None
        }
    )
    
    if created:
        print(f"创建主菜单: {database_menu.name}")
        # 添加主菜单权限
        database_menu.permissions.add(created_permissions['database_manage'])
    else:
        print(f"主菜单已存在: {database_menu.name}")
    
    # 创建子菜单
    submenus_data = [
        {
            'name': '数据库概览',
            'path': '/database/overview',
            'component': 'database/DatabaseManagement',
            'icon': 'el-icon-data-board',
            'sort_order': 1,
            'permissions': ['database_manage']
        },
        {
            'name': '连接管理',
            'path': '/database/connections',
            'component': 'database/ConnectionManagement',
            'icon': 'el-icon-connection',
            'sort_order': 2,
            'permissions': ['database_connection_manage']
        },
        {
            'name': 'SQL查询',
            'path': '/database/query',
            'component': 'database/QueryTool',
            'icon': 'el-icon-edit-pen',
            'sort_order': 3,
            'permissions': ['database_query']
        },
        {
            'name': '备份管理',
            'path': '/database/backup',
            'component': 'database/BackupManagement',
            'icon': 'el-icon-download',
            'sort_order': 4,
            'permissions': ['database_backup']
        },
        {
            'name': '性能监控',
            'path': '/database/monitoring',
            'component': 'database/MonitoringDashboard',
            'icon': 'el-icon-monitor',
            'sort_order': 5,
            'permissions': ['database_monitor']
        }
    ]
    
    # 创建子菜单
    for submenu_data in submenus_data:
        submenu, created = Menu.objects.get_or_create(
            path=submenu_data['path'],
            defaults={
                'name': submenu_data['name'],
                'component': submenu_data['component'],
                'icon': submenu_data['icon'],
                'sort_order': submenu_data['sort_order'],
                'is_active': True,
                'parent': database_menu
            }
        )
        
        if created:
            print(f"创建子菜单: {submenu.name}")
            # 添加子菜单权限
            for perm_code in submenu_data['permissions']:
                if perm_code in created_permissions:
                    submenu.permissions.add(created_permissions[perm_code])
        else:
            print(f"子菜单已存在: {submenu.name}")
    
    print("\n数据库管理菜单添加完成！")

if __name__ == '__main__':
    add_database_menus()
